package common.util;

import java.util.Random;

import common.pojo.InfoEnum;

/***
 * 和正则表达式相关的工具类
 * @author lby
 *
 */
public class RegexUtil
{
	/***
	 * 纯数字
	 */
	private final String numberSrt = "0123456789";
	/***
	 * 纯字母
	 */
	private final String characterStr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	/***
	 * 生成一个随机的字符串
	 * @param length 长度
	 * @param infoEnum  0：纯数字，1：纯字母，2：子母+数字
	 * @return
	 */
	public String proccedRandStr(int length,InfoEnum infoEnum)
	{
		/*目标字符串*/
		String targetStr = this.numberSrt;
		if(infoEnum.getCode()==InfoEnum.VAR_NUMBER.getCode())
		{
			targetStr = this.numberSrt ;
		}
		else if(infoEnum.getCode()==InfoEnum.VAR_CHAR.getCode())
		{
			targetStr = this.characterStr;
		}
		else if(infoEnum.getCode() ==InfoEnum.VAR_NUMCHAR.getCode())
		{
			targetStr = this.numberSrt + characterStr ; 
		}
		/*准备一个随机数*/
		Random random = new Random();
		StringBuilder sb = new StringBuilder();
		for(int i = 0 ; i < length ; i++)
		{
			/*第一步，通过从长度中返回一个随机数字，随机数字就代表了这个字符的下标
			 * 第二步：找出这个随机数，通过查找到刚才找到的随机数下标查询到这个字符
			 * 第三步：再把字符添加到字符字符串里面。
			 * 
			 * */
			/*随机生成一个数字*/
			int randInt = random.nextInt(targetStr.length());
			/*随机字符*/
			char ch = targetStr.charAt(randInt);
			/*追加*/
			sb.append(ch);
		}
		return sb.toString();
	}
	public static void main(String[]args)
	{
		RegexUtil regexUtil = new RegexUtil();
		for(int i = 0 ;i < 100 ; i++)
		{
			String tarStr = regexUtil.proccedRandStr(10, InfoEnum.VAR_NUMCHAR);
			System.out.println(i+"==="+tarStr);
		}
		
	}
	
}
